
var store_departamento;
var store_perfil;

Ext.onReady(function()
{
    store_departamento = new X.store.Json({
        fields : [
            'codigoDepartamento',
            'nombreDepartamento'
        ]
    });

    store_perfil = new X.store.Json({
        fields : [
            'codigoPerfil',
            'nombrePerfil'
        ]
    });

    var form = new X.form.FormPanel({

        title            : 'Crear Usuario',
        submitButtonText : 'Crear',
        returnButtonText : 'Cancelar',
        submitUrl        : '/usuario/ajax-crear',
        returnUrl        : '/usuario/listar',
        width            : 420,
        labelWidth       : 90,

        items:[
            new Ext.form.FieldSet({title:'Usuario',items:
            [
                new X.field.Text ({fieldLabel:'Usuario',    id:'username',  width:230}),
                new X.field.Pass ({fieldLabel:'Contraseña', id:'password',  width:230, checkedBy:'confirmar'}),
                new X.field.Pass ({fieldLabel:'Confirmar',  id:'confirmar', width:230, checkPass:'password'}),
                new X.field.Combo({
                    id           : 'perfil',
                    hiddenName   : 'codigoPerfil',
                    fieldLabel   : 'Perfil',
                    valueField   : 'codigoPerfil',
                    displayField : 'nombrePerfil',
                    width        : 230,
                    store        : store_perfil
                })
            ]}),
            new Ext.form.FieldSet({title:'Información Personal',items:
            [
                new X.field.Text  ({fieldLabel:'Nombre',     id:'nombreUsuario',   width:230}),
                new X.field.Text  ({fieldLabel:'Apellido',   id:'apellido',        width:230}),
                new X.field.Text  ({fieldLabel:'Cargo',      id:'cargo',   width:230}),
                new X.field.Text  ({fieldLabel:'Titulo',     id:'titulo',   width:230}),
                new X.field.Email ({fieldLabel:'Email',      id:'email',           width:230}),
                new X.field.Number({fieldLabel:'Cedula',     id:'cedulaNro',       width:230}),
                new X.field.Date  ({fieldLabel:'Fecha Nac.', id:'fechaNacimiento', width:230}),
                new X.field.Text  ({fieldLabel:'Teléfono',   id:'telefono',        width:230}),
                new X.field.Text  ({fieldLabel:'Domicilio',  id:'domicilio',       width:230}),
                new X.field.Combo ({
                    id           : 'departamento',
                    hiddenName   : 'codigoDepartamento',
                    fieldLabel   : 'Departamento',
                    valueField   : 'codigoDepartamento',
                    displayField : 'nombreDepartamento',
                    width        : 230,
                    store        : store_departamento
                })
            ]})
        ]
    });

    form.getForm().addListener('beforeaction', function(form, action){
        if (Ext.isEmpty(Ext.getCmp('username').getValue())){
            X.msg.Failure('Complete el campo "Usuario"'); return false;
        }
        if (Ext.isEmpty(Ext.getCmp('password').getValue())){
            X.msg.Failure('Complete el campo "Contraseña"'); return false;
        }
        if (Ext.isEmpty(Ext.getCmp('confirmar').getValue())){
            X.msg.Failure('Complete el campo "Confirmar"'); return false;
        }
        if (Ext.getCmp('confirmar').isValid()==false){
            X.msg.Failure('Campo incorrecto "Confirmar"'); return false;
        }
        if (Ext.isEmpty(Ext.getCmp('perfil').getValue())){
            X.msg.Failure('Complete el campo "Perfil"'); return false;
        }
        if (Ext.isEmpty(Ext.getCmp('nombreUsuario').getValue())){
            X.msg.Failure('Complete el campo "Nombre"'); return false;
        }
        if (Ext.isEmpty(Ext.getCmp('apellido').getValue())){
            X.msg.Failure('Complete el campo "Apellido"'); return false;
        }
        if (Ext.getCmp('email').isValid()==false){
            X.msg.Failure('Campo incorrecto "Email"'); return false;
        }
        if (Ext.getCmp('cedulaNro').isValid()==false){
            X.msg.Failure('Campo incorrecto "Cedula"'); return false;
        }
        if (Ext.getCmp('fechaNacimiento').isValid()==false){
            X.msg.Failure('Campo incorrecto "Fecha Nac."'); return false;
        }
        if (Ext.isEmpty(Ext.getCmp('departamento').getValue())){
            X.msg.Failure('Complete el campo "Departamento"'); return false;
        }
        return true;
    });
});
